package com.example.controller;

import com.example.entity.FileNode;

import com.example.service.FileService;
import com.example.utils.ConstantVariable;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



/**
 *
 */
@RestController
@RequestMapping("/file")
public class FileController {

    // SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 日期格式化
    @Autowired
    FileService fileService;


    @PostMapping("/upload")
    public String upload(MultipartFile uploadFile, HttpServletRequest req) {
        String realPath = ConstantVariable.baseDir;
        fileService.upload(uploadFile, realPath);
        return null;
    }

    @PostMapping("/download")
    public void download(@RequestBody FileNode fileNode, HttpServletResponse response) {
//        String baseDir = ConstantVariable.baseDir;
//        String year = poJo.getYear();
//        String month = poJo.getMonth();
//        int ke_index = poJo.getKe_index();
//        String fileName = poJo.getFileName();
//        String extendName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
//        String dirPath = "";
//        if (extendName.contains("pdf")) {
//            dirPath = baseDir + "/" +year + "/" + month + "/" + ke_index + "/" + "pdf" + "/";
//        }else {
//            dirPath = baseDir + "/" +year + "/" + month + "/" + ke_index + "/" + "images" + "/";
//        }
//        try {
//
//            File file = new File(dirPath, fileName);
//            String filename = file.getName();
//            // 将文件写入输入流
//            FileInputStream fileInputStream = new FileInputStream(file);
//            InputStream fis = new BufferedInputStream(fileInputStream);
//            byte[] buffer = new byte[fis.available()];
//            fis.read(buffer);
//            fis.close();
//            // 清空response
//            response.reset();
//            // 设置response的Header
//            response.setCharacterEncoding("UTF-8");
//            //Content-Disposition的作用：告知浏览器以何种方式显示响应返回的文件，用浏览器打开还是以附件的形式下载到本地保存
//            //attachment表示以附件方式下载 inline表示在线打开 "Content-Disposition: inline; filename=文件名.mp3"
//            // filename表示文件的默认名称，因为网络传输只支持URL编码的相关支付，因此需要将文件名URL编码后进行传输,前端收到后需要反编码才能获取到真正的名称
//            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
//            // 告知浏览器文件的大小
//            response.addHeader("Content-Length", "" + file.length());
//            OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
//            response.setContentType("application/octet-stream");
//            outputStream.write(buffer);
//            outputStream.flush();
//        } catch (IOException ex) {
//            ex.printStackTrace();
//        }
    }
}
